The Mermaid Block
The mermaid block allows you to create diagrams using Mermaid.js. It supports a variety of diagram types, including flowcharts, sequence diagrams, class diagrams, state diagrams, Gantt charts, and more.
To insert a mermaid block, type ::mermaid
in the editor and press enter. A blank block will appear. By clicking on it, you'll be able to edit its contents, much like with the math block.
Flowcharts
graph TD
A[Start] --> B[Process]
B --> C{Decision}
C -->|Yes| D[Result 1]
C -->|No| E[Result 2]
graph D
specifies the direction of the flowchart (top to bottom in this case). You can also useLR for left to right
,RL for right to left
, andBT for bottom to top
.A[Start]
creates a node labeled "Start".-->
creates a directed link from one node to another.{Decision}
creates a decision node (diamond-shaped).--> |Yes|
creates a conditional link labeled "Yes".
Sequence Diagrams
sequenceDiagram
participant A as Alice
participant B as Bob
A->>B: Hello Bob, how are you?
B-->>A: I am good thanks!
Note right of B: Bob thinks
B->>C: How about you?
C-->>B: I'm fine too!
sequenceDiagram
specifies the start of a sequence diagram.participant A
as Alice defines a participant with a display name.A->>B: Message
sends a message from A to B.Note right of B
adds a note to the right of participant B.
Advanced Sequence Diagrams
Sequence diagrams can be enhanced with loops, alternatives (alt), and options (opt).
sequenceDiagram
participant A as Alice
participant B as Bob
A->>B: Hello Bob
alt Is Bob busy?
B-->>A: Yes, I am busy
else
B-->>A: No, I am free
opt Extra time?
B-->>A: Let's grab a coffee
end
end
loop Daily routine
B-->>A: Check email
end
alt ... else
creates an alternative block with conditions.opt
creates an optional block.loop
creates a loop block.
Class Diagrams
classDiagram
class Animal {
+String name
+int age
+makeSound()
}
class Dog {
+String breed
}
Animal <|-- Dog
classDiagram
specifies the start of a class diagram.class Animal {}
defines a class named Animal.+String name
defines a public attribute.+makeSound()
defines a public method.Animal <-- Dog
indicates inheritance, where Dog inherits from Animal.
State Diagrams
stateDiagram
[*] --> Idle
Idle --> Processing : Event1
Processing --> Done : Event2
Done --> [*]
stateDiagram
specifies the start of a state diagram.[ * ]
represents the start state.Idle --> Processing : Event1
defines a transition from Idle to Processing triggered by Event1.
Gantt Charts
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
Task1 :a1, 2023-01-01, 30d
Task2 :after a1 , 20d
Task3 : 2023-01-15, 25d
gantt
specifies the start of a Gantt chart.title
sets the title of the chart.dateFormat
specifies the date format.section
defines a section of tasks.Task1 :a1, 2023-01-01, 30d
defines a task with anID, start date, and duration.
:after a1
schedules the task to start after task a1 completes.
Pie Charts
Pie charts are used to represent data in a circular graph.
pie
title Pie Chart Example
"Category A" : 40
"Category B" : 20
"Category C" : 30
"Category D" : 10
pie
specifies the start of a pie chart.title
sets the title of the chart."Category A" : 40
defines a segment of the pie chart with alabel and value
.
Entity Relationship Diagrams (ERD)
ERDs are used to represent the relationships between entities in a database.
erDiagram
CUSTOMER ||--o{ ORDER : places
CUSTOMER {
string name
string address
}
ORDER {
int id
string product
int quantity
}
erDiagram
specifies the start of an ER diagram.CUSTOMER ||--o{ ORDER : places
defines a relationship where a customer places orders.CUSTOMER {}
defines an entity with attributes.int id
defines an attribute with a type.
Commit Flow Diagram
gitGraph
commit
branch develop
checkout develop
commit
commit
branch feature-1
checkout feature-1
commit
checkout develop
merge feature-1
commit
checkout main
merge develop
commit
gitGraph
specifies the start of a commit flow diagram.commit
creates a commit.branch develop
creates a new branch named develop.checkout develop
switches to the develop branch.merge feature-1
merges thefeature-1
branch into thecurrent branch
.
User Journey Diagram
journey
title User Journey for Booking a Flight
section Search
User searches for flights: 5: User
section Select
User selects a flight: 5: User
System shows flight details: 3: System
section Book
User enters passenger details: 5: User
System confirms booking: 4: System
journey
specifies the start of a user journey diagram.section
creates a new section in the journey.User searches for flights: 5: User
describes an action, arating, and an actor
.
Quadrant Chart
quadrantChart
title Reach and engagement of campaigns
x-axis Low Reach --> High Reach
y-axis Low Engagement --> High Engagement
quadrant-1 We should expand
quadrant-2 Need to promote
quadrant-3 Re-evaluate
quadrant-4 May be improved
Campaign A: [0.3, 0.6]
Campaign B: [0.45, 0.23]
Campaign C: [0.57, 0.69]
Campaign D: [0.78, 0.34]
Campaign E: [0.40, 0.34]
Campaign F: [0.35, 0.78]
quadrantChart
specifies the start of a quadrant chart.title Reach and Engagement of Campaigns
sets the title of the chart.x-axis Low Reach --> High Reach
labels thex-axis
with a range.y-axis Low Engagement --> High Engagement labels
they-axis
with a range.quadrant-1: We should expand
toquadrant-4: May be improved
label the four quadrants."Campaign A" : [0.3, 0.6]
plots a point representing Campaign A with specific coordinates.
XY Chart (XYChart-Beta)
xychart-beta
title "Sales Revenue"
x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
y-axis "Revenue (in $)" 4000 --> 11000
bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
xychart-beta
specifies the start of an XY chart.title "Sales Revenue"
sets the title of the chart.x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
labels the x-axis with months.y-axis "Revenue (in $)" 4000 --> 11000
labels the y-axis with a range for revenue.bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
plots a bar chart with the given data points.line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
plots a line chart with the same data points.